-- 月度活动   合成与觉醒 百炼成神

-- human.db.actMonthTask.hecheng
local Util = require("common.Util")
local Msg = require("core.Msg")
local ObjHuman = require("core.ObjHuman")
local MonthactExcel = require("excel.monthAct")
local MailExcel = require("excel.mail")
local HeroExcel = require("excel.hero").hero
local Grid = require("bag.Grid")
local MonthActFill = require("monthAct.MonthDataFill")
local MonthActLogic = require("monthAct.MonthActLogic")
local MailManager = require("mail.MailManager")
local YunYingLogic = require("yunying.YunYingLogic")

MONTHACT_HCJX_TYPE_1  = 1        -- 合成任务
MONTHACT_HCJX_TYPE_2  = 2        -- 觉醒任务

local function getNowValue(human, id)
    if not human.db.actMonthTask or 
        not human.db.actMonthTask.hecheng then
        return 0
    end
    return human.db.actMonthTask.hecheng[id] or 0
end

local function setNowValue(human, id, value)
    human.db.actMonthTask = human.db.actMonthTask or {}
    human.db.actMonthTask.hecheng = human.db.actMonthTask.hecheng or {}
    human.db.actMonthTask.hecheng[id] = value
end

function query(human)    
    local msgRet = Msg.gc.GC_MONTHACT_HCJX_QUERY 
    msgRet.leftTime = MonthActLogic.getActLeftTime(human)
    msgRet.list[0] = #MonthactExcel.hecheng
    for id, cf in ipairs(MonthactExcel.hecheng) do 
        MonthActFill.makeMonthTaskData(msgRet.list[id], cf, id)  
        msgRet.list[id].cur = getNowValue(human, id)  
    end
    --Msg.trace(msgRet)
    Msg.send(msgRet, human.fd)
end

--合成觉醒活动  计数入口   Ex 之前
function addMonthHecheJuexCntEx(human, hcType, star, heroID)
    -- 检查任务类型是否非法九 零 一 起玩 www.9 01  7 5.com 
    if not hcType then return end

    MonthActLogic.checkActEndTime(human)
    star = star or 0
    for id, cf in ipairs(MonthactExcel.hecheng) do
        if cf.type == hcType and star == cf.special then
            addMonthHecheJuexCnt(human, id, heroID)
            break
        end
    end    
end

function addMonthHecheJuexCnt(human, id, heroID)
    --检查id是否非法
    local cf = MonthactExcel.hecheng[id]
    if not cf then return end

    local oldStep = getNowValue(human, id)

    -- 已经达到完成上限
    if oldStep >= cf.taskCnt then return end

    local newStep = oldStep + 1
    setNowValue(human, id, newStep)
    ObjHuman.save(human)
    --完成一次 发放奖励一次   
    local mailId = 0
    if cf.type == MONTHACT_HCJX_TYPE_1 then
        mailId = 13
    elseif cf.type == MONTHACT_HCJX_TYPE_2 then
        mailId = 14
    end
    if mailId == 0 then return end
    
    local heroConfig = HeroExcel[heroID]
    local heroName = heroConfig and heroConfig.name or ""
    local title = MailExcel.mail[mailId].title
    local content = Util.format(MailExcel.mail[mailId].content, cf.special, heroName)
    local senderName = MailExcel.mail[mailId].senderName    
    MailManager.add(MailManager.SYSTEM, human.db._id, title, content, cf.reward, senderName)
    
    for k, v in pairs(funcID) do
        YunYingLogic.updateIcon(YYInfo[k], human)
        break
    end
end

-- GM
function addCntByGm(human,type,heroId, num)
    if not num or not type or not heroId then 
        return 
    end
    local heroConfig = HeroExcel[heroId]
    if not heroConfig then return end
    for i= 1,num do
        addMonthHecheJuexCntEx(human, type, heroConfig.star , heroId)
    end
end

--[[
function isRed(human)
    for id, cf in pairs(MonthactExcel.hecheng) do
        -- 已经达到完成上限
        if getNowValue(human, id) < cf.taskCnt then
            return true
        end
    end
end
--]]
